好棒~ 明天沒有考試~
時間 2024/9/25 下午9:02
地點 還是我房間
延續昨天的主題,如果我們要讓物體能夠平滑或甚至其他的動畫方式來移動到指定位置,我們必須要使用到"移動動畫"這個指令(中文是我自己取的),英文叫做"TweenService"。
若要使用TweenService,我們必須要先定義他(也可以不用,但有定義會比較好懂)
local TweenService = game:GetService("TweenService")
接下來,我們要定義動畫的類型
local TweenService = game:GetService("TweenService")
local TweenInfo = TweenInfo.new(1, Enum.EasingStyle.Linear)
最後,我們要定義動畫的目標
local TweenService = game:GetService("TweenService")
local TweenInfo = TweenInfo.new(1, Enum.EasingStyle.Linear)
local goal = {Position = Vector3.new(0, 30, 0)}
最後的最後,我們要定義出動畫並且播放他
local TweenService = game:GetService("TweenService")
local TweenInfo = TweenInfo.new(1, Enum.EasingStyle.Linear)
local goal = {Position = Vector3.new(0, 30, 0)}
local tween1 = TweenService:Create(script.Parent, TweenInfo, goal)
--可以在這邊使用Event
tween1:Play()
以上就是最簡單的移動動畫,接下來解釋各項指令
game 本遊戲
:GetService() 取得服務(每當我們需要使用到任何指令服務,都需要使用到這一個指令,例如上述的TweenService、Players、StarterGui等等)
TweenInfo.new() 移動動畫的類型(new後面的括號要放入的數值依序為: .new(Time, EasingStyle, EasingDirection, RepeatCount, Reverses, DelayTime)
。 Time 動畫執行的時間
。 EasingStyle 動畫的類型,如線性,方形等等
。 EasingDirection 動畫方向,這裡指的方向為動畫的in或out
。 RepeatCount 重複次數,若數值小於零則會無限重複,行程迴圈
。 Reverses 是否進行反轉,若值為true,在動畫播放完後會再次播放回去
。 DelayTime 延遲時間,預設為0
另外在Script中,名詞不用打出來,我上面打的只是欄位的名稱
/
goal 移動動畫的目標(例如我們想要讓物體從A點移動到B點,那B點的座標應放在此處)
TweenService:Create() 建立動畫(括號內所放入的數值依序為: 動畫作用對象, 動畫類型, 動畫目標)
:Play() 播放(這個指令不限於TweenService,也可以用在其他例如玩家動畫、音頻等等)
如果你已經把TweenService學到滾瓜爛熟了,也可以把整個動畫縮成一行指令,如:
game:GetService("TweenService"):Create(對象, TweenInfo.new(動畫類型), {動畫目標}):Play()
這樣也是可以達到一樣的效果的,但本人不建議這樣使用,因為我很多時候都會忘記打後面的Play(),那還不如一個一個定義比較保險。
另外,如果要做到Model的TweenService,可以在對象那一個欄位使用Model的PrimaryPart,只是要注意,Model內部只有PrimaryPart的錨定要開啟,其他物件都必須關閉,否則動畫就會只有PrimaryPart自己一個物件執行,其他物體都會停在原地。
而TweenService最複雜的點在於,你必須要熟悉各種物體的移動方式,例如要移動單一物件可以使用CFrame、Vector3,移動Model要使用PrimaryPart、移動UI要使用UDim2......等等。
當然,這並不局限於改變位置,基本上只要是能改變的屬性,且屬性質為數字Number的話,都可以適用於TweenService,如顏色、透明度、反光度...等等。
以上,就是我對於TweenService的小小見解,如果想看更多更詳細的內容,下方這個連結為Roblox官方製作的有關於TweenService使用方法的API
https://create.roblox.com/docs/reference/engine/classes/TweenService
那若有相關疑問或者上述資料有誤請在下方留言讓我知道,那明天應該也不會幹嘛(畢竟我Bug都修完了)